package com.lxq.test2012.main02;

import java.util.*;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        // max：预测最多的个数；ans：结果；cnt：以 xx 安全指数预测成功的个数
        int n = sc.nextInt(), max = -1, ans = -1, cnt = 0;

        //定义优先队列
        PriorityQueue<int[]> pq = new PriorityQueue<>((o1, o2) -> o1[0] - o2[0]);

        //定义集合存放所有安全指数 treeSet默认升序排序
        Set<Integer> set = new TreeSet<>();

        // 输入
        while (n-- != 0) {
            int[] temp = {sc.nextInt(), sc.nextInt()};
            pq.add(temp);
            set.add(temp[0]);
            // 累计没挂科的人数，后面遍历遇到直接--即可。等同于 所有没挂科人数 - 当前遍历到的没挂科人数
            if (temp[1] == 1) {
                cnt++;
            }
        }


        for (int point : set) {
            while (!pq.isEmpty() && pq.peek()[0] < point) {
                // 对于 type==1 来说，预测对的人数 - 1，对于 type==0 来说，预测对的人数 + 1
                if (pq.peek()[1] == 1) {
                    cnt--;
                } else {
                    cnt++;
                }
                pq.poll();
            }
            if (cnt >= max) {
                ans = point;
                max = cnt;
            }
        }
        System.out.println(ans);
    }

    //ccf70分 超时方法
//    public static void main(String[] args) {
//        int count=0;
//        int[] point,result,predict;//安全指数、结果、预测结果
//
//        //读取输入
//        Scanner sc = new Scanner(System.in);
//        while(count<2||count>100000) {
//            count = sc.nextInt();
//        }
//
//        point = new int[count];
//        result = new int[count];
//        predict = new int[count];
//
//        for(int i = 0; i < count; i++) {
//            if(sc.hasNext()) {
//                point[i] = sc.nextInt();
//                result[i] = sc.nextInt();
//            }
//        }
//
//        //预测
//        for (int j = 0; j < count; j++) {
//            predict[j] = 0;
//            for (int k = 0; k < count; k++) {
//
//                if(point[k] >= point[j] && result[k] == 1) predict[j]++;
//
//                if(point[k] < point[j] && result[k] == 0) predict[j]++;
//
//            }
//        }
//
//        //选取最佳阈值
//        int tag = 0;
//        for (int s = 1; s < count; s++) {
//            if(predict[s] > predict[tag]) tag = s;
//            if(predict[s] == predict[tag] && point[s] >= point[tag]) tag = s;
//        }
//
//        //输出最佳阈值
//        System.out.println(point[tag]);
//
//        sc.close();
//    }
}
